package main

import (
	"fmt"
	"strconv"
)

func main() {
	//1. 基本的类型转换
	a := int(3.0)
	fmt.Println(a)
	//在go语言中不支持变量间的隐式类型转换
	//1. 变量间类型转换不支持
	var b int = 5.0 //常量,常量到变量是会进行隐式转换
	fmt.Println(b)

	c := 5.1
	fmt.Printf("%T\n", c)
	var d int = int(c)
	fmt.Println(d)

	var e int64 = 56
	var f int32 = int32(e)
	fmt.Println(f)

	var g int64 = 56
	var h int32 = int32(g)
	fmt.Println(h)

	//int转字符串 itoa
	fmt.Printf("int转字符串 itoa  %T\n", strconv.Itoa(int(g)))
	//字符串转int aoti
	data, _ := strconv.Atoi("12")
	fmt.Printf("字符串转int aoti  %T\n", data)

	// parse类的函数
	b1, err := strconv.ParseBool("False")
	fmt.Println(err)
	fmt.Println(b1)
	f1, err := strconv.ParseFloat("3.1415", 32)
	fmt.Println(err)
	fmt.Printf("%T\n", f1)
	i1, err := strconv.ParseInt("012", 0, 64)
	fmt.Println(err)
	fmt.Printf("%T %d\n", i1, i1)

	//其他类型转字符串
	fmt.Println(strconv.FormatBool(true))
	fmt.Println(strconv.FormatFloat(3.1415, 'E', -1, 64))
	//表示将-42转换为16进制数，转换的结果为-2a。
	fmt.Println(strconv.FormatInt(-42, 16))
	fmt.Println(strconv.FormatUint(42, 10))
}
